package com.gewu.pm.ui.activity.filter.config;

/**
 * 文本选择器类型枚举
 * 
 * 用于 TEXT_SELECTOR 类型的筛选项，定义点击后弹出的对话框类型
 * 
 * 工作原理：
 * 1. 用户在配置中指定 SelectorType
 * 2. FilterManager 根据类型调用对应的对话框
 * 3. 对话框返回选中的数据
 * 
 * 使用场景：
 * - 配合 addTextSelector() 方法使用
 * - 每种类型对应项目中已有的选择对话框
 * 
 * @author AI Assistant
 * @since 1.0
 */
public enum SelectorType {
    
    /**
     * 销售区域选择器
     * 
     * 对应对话框：SelectSalesRegionDialog
     * 
     * 功能：
     * - 选择销售区域（如：华东区、华南区等）
     * - 支持设置默认选中项
     * 
     * 使用示例：
     * .addTextSelector("sales_area", "销售区域", "请选择销售区域", SelectorType.SALES_REGION)
     */
    SALES_REGION,
    
    /**
     * 经办人选择器
     * 
     * 对应对话框：SelectHandlingPersonDialog
     * 
     * 功能：
     * - 选择经办人（处理业务的人员）
     * - 支持设置默认选中项
     * 
     * 使用示例：
     * .addTextSelector("handler", "经办人", "请选择经办人", SelectorType.HANDLER)
     */
    HANDLER,
    
    /**
     * 提交人选择器
     * 
     * 对应对话框：SelectSubmitterDialog
     * 参数：type = 1（默认）
     * 
     * 功能：
     * - 选择提交人（提交单据的人员）
     * - 可能包含多种角色（业务员、配送商、终端等）
     * 
     * 使用示例：
     * .addTextSelector("submitter", "提交人", "请选择提交人", SelectorType.SUBMITTER)
     */
    SUBMITTER,
    
    /**
     * 业务员选择器
     * 
     * 对应对话框：SelectSalespersonDialog
     * 
     * 功能：
     * - 选择业务员
     * - 返回业务员姓名和完整信息（SalespersonBean）
     * 
     * 使用示例：
     * .addTextSelector("salesperson", "业务员", "请选择业务员", SelectorType.SALESPERSON)
     */
    SALESPERSON,
    
    /**
     * 配送商选择器
     * 
     * 对应对话框：SelectSubmitterDialog
     * 参数：type = 101（只显示配送商）
     * 
     * 功能：
     * - 选择配送商
     * - 从提交人列表中筛选出配送商角色
     * 
     * 使用示例：
     * .addTextSelector("distributor", "配送商", "请选择配送商", SelectorType.DISTRIBUTOR)
     */
    DISTRIBUTOR,
    
    /**
     * 终端选择器
     * 
     * 对应对话框：SelectSubmitterDialog
     * 参数：type = 102（只显示终端）
     * 
     * 功能：
     * - 选择终端（客户）
     * - 从提交人列表中筛选出终端角色
     * 
     * 使用示例：
     * .addTextSelector("terminal", "终端", "请选择终端", SelectorType.TERMINAL)
     */
    TERMINAL,
    
    /**
     * 部门选择器
     * 
     * 对应对话框：SelectSubmitterDialog
     * 参数：type = 104（只显示部门）
     * 
     * 功能：
     * - 选择部门
     * - 从组织架构中选择部门
     * 
     * 使用示例：
     * .addTextSelector("department", "部门", "请选择部门", SelectorType.DEPARTMENT)
     */
    DEPARTMENT,
    
    /**
     * 自定义列表选择器
     * 
     * 对应对话框：SelectionListDialog
     * 
     * 功能：
     * - 从自定义列表中选择
     * - 需要在 FilterItem 中提供 options 列表
     * 
     * 使用场景：
     * - 当没有现成的对话框时使用
     * - 简单的列表选择（如类型、分类等）
     * 
     * 使用示例：
     * FilterItem item = new FilterItem.Builder()
     *     .selectorType(SelectorType.CUSTOM_LIST)
     *     .options(Arrays.asList("选项1", "选项2", "选项3"))
     *     .build();
     * 
     * 注意：
     * - 需要手动设置 options，否则无法显示选项
     */
    CUSTOM_LIST,
    
    /**
     * 日期选择器
     * 
     * 对应对话框：DateDialog
     * 
     * 功能：
     * - 直接弹出日期选择对话框
     * - 选择单个日期
     * - 日期格式：yyyy年MM月dd日
     * 
     * 使用场景：
     * - 最近跟进时间
     * - 单个日期选择
     * 
     * 使用示例：
     * .addTextSelector("follow_up_date", "最近跟进", "请选择最近跟进时间", SelectorType.DATE_PICKER)
     */
    DATE_PICKER
}
